very detailed explanation